// pages/alterForm/alterForm.js
Page({
  /**
   * 页面的初始数据
   */
  data: {
    list: [{
      id: 0,
      value: '',
      name: 'stuName',
      icon_src: '../../icon/form/icon-name@2x.png',
      placeholder: '请输入姓名'
    },
    {
      id: 1,
      value: '',
      name: 'stuId',
      icon_src: '../../icon/form/icon-number@2x.png',
      placeholder: '请输入学号'
    },
    {
      id: 2,
      value: '',
      name: 'stuSex',
      icon_src: '../../icon/form/icon-gender@2x.png',
      placeholder: '请输入性别'
    },
    {
      id: 3,
      value: '',
      name: 'stuPhone',
      icon_src: '../../icon/form/icon-phone@2x.png',
      placeholder: '请输入手机号'
    },
    {
      id: 4,
      value: '',
      name: 'stuAcademy',
      icon_src: '../../icon/form/icon-college@2x.png',
      placeholder: '请输入所在学院'
    },
    {
      id: 5,
      name: 'stuClass',
      icon_src: '../../icon/form/icon-class@2x.png',
      placeholder: '请输入所在班级，例如计算机类1班'
    },
    ],
    value: [
      { id: 0, value: '前端', isGroup: false },
      { id: 1, value: '后台', isGroup: false },
      { id: 2, value: '安卓', isGroup: false },
      { id: 3, value: '大数据', isGroup: false },
      { id: 4, value: 'UI', isGroup: false },
    ],
    introduction_value: '',
    flag: 1,   // 是否修改
    sureFlag: 0,   // 是否确认修改
    changeTime: 0,  // 修改次数
    changeWord: "修改",
    isSex: [false, false],   // 通过学号判断性别
    stuAcademyArr: ['计算机学院', '信息工程学院', '自动化学院', '机电工程学院', '材料与能源学院', '轻工化工学院', '土木与交通工程学院', '物理与光电工程学院', '环境科学与工程学院', '外国语学院'],
    // 班级数组
    stuClassArr: [],
  },
  // 所有班级
  allClassArr: [['人工智能1班', '人工智能2班', '计算机类1班', '计算机类2班', '计算机类3班', '计算机类4班', '计算机类5班', '计算机类6班', '计算机类7班', '计算机类8班', '计算机类9班', '计算机类10班', '计算机类11班', '计算机类12班', '计算机类13班', '计算机类14班', '计算机类15班', '计算机类16班', '计算机类17班'],
  ['电子信息类1班', '电子信息类2班', '电子信息类3班', '电子信息类4班', '电子信息类5班', '电子信息类6班', '电子信息类7班', '电子信息类8班', '电子信息类9班', '电子信息类10班', '电子信息类11班', '电子信息类12班', '电子信息类13班',],
  ['物联网工程1班', '物联网工程2班', '数据科学与大数据技术1班', '数据科学与大数据技术2班', '自动化类1班', '自动化类2班', '自动化类3班', '自动化类4班', '自动化类5班', '自动化类6班', '自动化类7班', '电气工程及其自动化1班', '电气工程及其自动化2班', '电气工程及其自动化3班', '电气工程及其自动化4班', '电气工程及其自动化5班', '电气工程及其自动化6班'],
  ['机械电子工程', '智能制造工程', '工业工程', '测控技术与仪器1班', '测控技术与仪器2班', '机械类1班', '机械类2班', '机械类3班', '机械类4班', '机械类5班', '机械类6班', '机械类7班', '机械类8班', '机械类9班', '机械类10班', '机械类11班', '机械类12班', '机械类13班'],
  ['微电子科学与工程1班', '微电子科学与工程2班', '材料成型及控制工程1班', '材料成型及控制工程2班', '能源动力类1班', '能源动力类2班', '能源动力类3班', '能源动力类4班', '能源动力类5班', '能源动力类6班', '材料类1班', '材料类2班', '材料类3班', '材料类4班', '材料类5班', '材料类6班', '材料类7班', '材料类8班'],
  ['化学工程与工艺', '食品科学与工程1班', '食品科学与工程2班', '应用化学1班', '应用化学2班', '化工与制药类1班', '化工与制药类2班', '化工与制药类3班', '化工与制药类4班', '化工与制药类5班'],
  ['交通运输', '测绘工程', '工程管理1班', '工程管理2班', '土木类1班', '土木类2班', '土木类3班', '土木类4班', '土木类5班', '土木类6班', '土木类7班', '土木类8班', '土木类9班', '土木类10班'],
  ['电子科学与技术1班', '电子科学与技术2班', '电子科学与技术3班', '电子科学与技术4班', '光电信息科学与工程1班', '光电信息科学与工程2班', '光电信息科学与工程3班', '光电信息科学与工程4班', '光电信息科学与工程5班'],
  ['安全工程', '环境科学与工程类1班', '环境科学与工程类2班', '环境科学与工程类3班', '环境科学与工程类4班'],
  ['日语', '外国语言文学类1班', '外国语言文学类2班', '外国语言文学类3班', '外国语言文学类4班', '外国语言文学类5班'],
  ],
  /**
   * 生命周期函数--监听页面加载
   */

  onLoad: function () {
    // 获取域名
    const app = getApp();
    const baseUrl = app.globalData.baseUrl;
    let initFlag = 1;
    this.initFlag = initFlag;
    wx.request({
      url: baseUrl + '/stuUser/queryInformation?openId=' + wx.getStorageSync('openId'),
      header: {
        'Content-Type': 'application/json',
        'cookie': wx.getStorageSync('cookie'),
        'session': wx.getStorageSync('session')
      },
      success: (result) => {
        const { data } = result.data;
        const { list } = this.data;
        const { isSex } = this.data;
        const value = this.data.value;
        const introduction_value = data.stuIntroduction;
        const changeTime = result.data.data.modifyNum;
        this.changeTime = changeTime;
        list[0].value = data.stuName;
        list[1].value = data.stuId;
        list[2].value = data.stuSex;
        list[3].value = data.stuPhone;
        list[4].value = data.stuAcademy;
        list[5].value = data.stuClass;
        // 组别
        for (let i = 0; i < value.length; i++) {
          value[i].isGroup = false;
        }
        for (let i = 0; i < value.length; i++) {
          if (value[i].value === data.stuDirection) {
            value[i].isGroup = true;
            break;
          }
        }
        // 判断性别
        if (list[2].value == '男') {
          isSex[0] = true;
          isSex[1] = false;
        } else {
          isSex[0] = false;
          isSex[1] = true;
        }

        // 修改时间
        if (this.changeTime == 3) {
          const changeWord = "修改次数已用完";
          this.setData({
            changeWord,
          })
        }
        // 判断学院
        let stuAcademyIndex = 0;//学院索引
        this.data.stuAcademyArr.some((item, i) => {
          if (item == data.stuAcademy) {
            stuAcademyIndex = i;
          }
          return item == data.stuAcademy
        });
        this.setData({
          list,
          introduction_value,
          changeTime,
          value,
          isSex,
          // stuAcademyIndex,
          stuClassArr: this.allClassArr[stuAcademyIndex],
        })
      },
    });
  },
  formSubmit(e) {
    // 获取表单数据对象
    const user = JSON.parse(JSON.stringify(e.detail.value));
    console.log(user);
    for (let k in user) { user[k] = user[k] ? user[k].trim() : null }
    // 数据数组
    const userArr = Object.values(user);
    // 判断是否为空
    if (userArr.some(item => item === '')) {
      wx.showToast({
        title: '请填写所有项',
        icon: 'error',
        image: '',
        duration: 1500,
        mask: true,
      });
      return;
    }
    // 验证表单
    if (this.isRex(user)) {
      wx.showToast({
        title: this.errorRex,
        icon: 'error',
        image: '',
        duration: 1500,
        mask: true,
      });
      return
    }
    this.user = JSON.parse(JSON.stringify(user));
    // 去除用户自我介绍的表情
    this.user.stuIntroduction = this.user.stuIntroduction.replace(/[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF][\u200D|\uFE0F]|[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF]|[0-9|*|#]\uFE0F\u20E3|[0-9|#]\u20E3|[\u203C-\u3299]\uFE0F\u200D|[\u203C-\u3299]\uFE0F|[\u2122-\u2B55]|\u303D|[\A9|\AE]\u3030|\uA9|\uAE|\u3030/g, '');
    const sureFlag = 1;
    this.setData({
      sureFlag,
    })
  },
  isRex(obj) {
    const isStuName = /^[\u4E00-\u9FA5\uf900-\ufa2d·s]{2,20}$/;
    const isSutNum = /^(312100|322100)\d{4}$/;
    const isStuPhone = /^1(3\d|4[5-9]|5[0-35-9]|6[2567]|7[0-8]|8\d|9[0-35-9])\d{8}$/;
    if (!isStuName.test(obj.stuName)) { this.errorRex = '姓名格式不对'; return true }
    if (!isSutNum.test(obj.stuId)) { this.errorRex = '学号格式不对'; return true; }
    if (!isStuPhone.test(obj.stuPhone)) { this.errorRex = '手机号格式不对'; return true; }
  },
  changeFlag() {
    let { flag } = this.data;
    flag = !flag;
    this.setData({
      flag
    })
  },
  changeState() {
    let { flag } = this.data;
    flag = !flag;
    this.setData({
      flag
    })
    this.onLoad();
  },
  cancelChange() {
    const sureFlag = 0;
    this.setData({
      sureFlag,
    })
  },
  updateInfor() {
    // 获取域名
    const app = getApp();
    const baseUrl = app.globalData.baseUrl;
    if (this.initFlag) {
      this.initFlag = 0;
      wx.login({
        success: res => {
          const changeTime = this.changeTime;
          const user = this.user;
          const that = this;
          if (changeTime < 3) {
            wx.showLoading({
              title: '加载中',
            })
            wx.request({
              url: baseUrl + '/stuUser/updateInformation',
              data: {
                openId: wx.getStorageSync('openId'),
                stuId: user.stuId,
                stuName: user.stuName,
                stuSex: user.stuSex,
                stuPhone: user.stuPhone,
                stuAcademy: user.stuAcademy,
                stuClass: user.stuClass,
                stuDirection: user.stuDirection,
                stuIntroduction: user.stuIntroduction
              },
              header: {
                'Content-Type': 'application/json',
                'cookie': wx.getStorageSync('cookie'),
              },
              method: 'PUT',
              success: (result) => {
                wx.hideLoading();
                const { data } = result
                if (data.msg == '修改成功') {
                  const sureFlag = 0;
                  const flag = 1;
                  let success = 1;
                  that.setData({
                    sureFlag,
                    flag,
                    success
                  })
                  that.onLoad();

                  setTimeout(() => {
                    success = 0;
                    that.setData({
                      success
                    })
                  }, 3000);
                } else {
                  console.log(data);
                  wx.showToast({
                    title: data.msg,
                    icon: 'error',
                    image: '',
                    duration: 1500,
                    mask: true,
                    success: (result) => {

                    },
                  });
                }
              },
              fail: (error) => {
                console.log();
                wx.showToast({
                  title: '请重试',
                  content: '网络出了点状况',
                  showCancel: false,
                  confirmText: '确定',
                  confirmColor: '#206bab',
                })
              }
            });
          }

        }
      })
      setTimeout(() => {
        this.initFlag = 1;
      }, 3000);
    }

  },
  // 改变学院处理
  bindAcademyChange: function (e) {
    const index = e.detail.value;
    //改变学院索引、班级数组
    this.setData({
      stuAcademyIndex: index,
      stuClassArr: this.allClassArr[index],
      stuClassIndex: 0//重置班级索引
    })
  },
  // // 专业班级处理
  bindClassChange: function (e) {
    //改变班级索引
    this.setData({
      stuClassIndex: e.detail.value
    })
  },
  // 学号改变性别
  bindConfirmSex: function (e) {
    const value = e.detail.value[1];
    const { isSex } = this.data;
    if (value == '1') {
      isSex[0] = true;
      isSex[1] = false;
    } else if (value == '2') {
      isSex[0] = false;
      isSex[1] = true;
    }
    this.setData({
      isSex,
    })
  }
})